/**
 *====================================================
 * 文件名称: FinanceApplicationActionApi.java
 * 修订记录：
 * No    日期				作者(操作:具体内容)
 * 1.    2015年9月23日			chenxy(创建:创建文件)
 *====================================================
 * 类描述：(说明未实现或其它不应生成javadoc的内容)
 */
package com.yuexunit.finance.project.action.v1;

import java.math.BigDecimal;
import java.util.List;

import com.yuexunit.finance.context.FinVersion1;
import com.yuexunit.finance.project.action.v1.model.CommissionExtractApplicationDetail;
import com.yuexunit.finance.project.action.v1.model.FiananceAuditInfo;
import com.yuexunit.finance.project.action.v1.model.FinanceAudit;
import com.yuexunit.finance.project.action.v1.model.FinanceBulkstock;
import com.yuexunit.finance.project.action.v1.model.FinanceCommissionInfoDetail;
import com.yuexunit.finance.project.action.v1.model.FinanceExpenseDetail;
import com.yuexunit.finance.project.action.v1.model.input.FinanceApplication;
import com.yuexunit.finance.project.action.v1.model.input.FinanceApplicationUpdate;
import com.yuexunit.finance.project.action.v1.model.input.FinanceProductInnerInput;
import com.yuexunit.finance.project.action.v1.model.output.ContainerInventory;
import com.yuexunit.finance.project.action.v1.model.output.FinanceApplicationDetail;
import com.yuexunit.finance.project.action.v1.model.output.FinanceAuditDetail;
import com.yuexunit.finance.project.action.v1.model.output.FinanceAuditRecordDetail;
import com.yuexunit.finance.project.action.v1.model.output.FinanceCancelApplicationDetail;
import com.yuexunit.finance.project.action.v1.model.output.FinanceCutLinesDetail;
import com.yuexunit.finance.project.action.v1.model.output.FinanceEvaluateDetail;
import com.yuexunit.finance.project.action.v1.model.output.FinanceLineInfo;
import com.yuexunit.finance.project.action.v1.model.output.FinanceProcess;
import com.yuexunit.finance.project.action.v1.model.output.FinanceWaybillDetail;
import com.yuexunit.finance.project.action.v1.model.output.HandleSuitcaseResult;
import com.yuexunit.finance.project.action.v1.model.output.ResultData;
import com.yuexunit.finance.project.action.v1.model.output.SupervisionEndallDetail;
import com.yuexunit.finance.project.action.v1.model.output.WareResultDetailData;
import com.yuexunit.finance.project.action.v1.model.output.WareResultDetailData2;
import com.yuexunit.finance.project.action.v1.model.output.WarehouseInfo;
import com.yuexunit.finance.project.action.v1.model.output.WarehouseMap;
import com.yuexunit.page.PageCriteria;
import com.yuexunit.page.PageList;
import com.yuexunit.web.annotation.Action;
import com.yuexunit.web.annotation.Parameter;
import com.yuexunit.web.annotation.Permission;

/**
 * @ClassName: FinanceApplicationActionApi
 * @Description: 融资申请管理
 * @author chenxy
 * @date 2015年9月23日 下午10:08:34
 */
public interface FinanceApplicationActionApi {

	@Permission
	@Action(version = FinVersion1.class, description = "创建融资申请基本信息")
	@Parameter(name = "financeId", description = "融资信息ID")
	public String createFinanceApplication(FinanceApplication financeApplication);
	
	@Action(version = FinVersion1.class, description = "创建融资申请基本信息")
	@Parameter(name = "financeId", description = "融资信息ID")
	public String createFinanceApplicationNologin(FinanceApplication financeApplication);

	@Permission
	@Action(version = FinVersion1.class, description = "修改融资申请基本信息")
	public void updateFinanceApplication(FinanceApplicationUpdate financeApplication);

	@Action(version = FinVersion1.class, description = "增补融资申请证明材料")
	public void supplementFinanceEvidentiary(
			@Parameter(name = "financeId", description = "﻿融资信息ID") Long financeId,
			@Parameter(name = "evidentiaryCategoryId", description = "证明材料分类ID") Long[] evidentiaryCategoryIds,
			@Parameter(name = "templateId", description = "模版ID") Long[] templateIds,
			@Parameter(name = "templateName", description = "模版名称") String[] templateNames,
			@Parameter(name = "evidentiaryId", description = "证明材料ID") Long[] evidentiaryIds,
			@Parameter(name = "materialFileuuid", description = "证明材料FileUuid") String[] materialFileuuids
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "审批时预览证明材料")
	public void readFinanceEvidentiary(
			@Parameter(name = "evidentiaryId", description = "证明材料ID") Long evidentiaryId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "取消融资申请")
	public void cancelFinanceApplication(
			@Parameter(name = "financeId", description = "﻿融资信息ID") Long financeId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "同意融资申请")
	@Parameter(name = "auditorId", description = "融资审核ID")
	public String consentFinanceApplication(FinanceAudit financeAudit);
	
	@Permission
	@Action(version = FinVersion1.class, description = "发送消息-测试")
	public void sendLetter(
			@Parameter(name = "title", description = "﻿标题") String title,
			@Parameter(name = "message", description = "﻿内容") String message,
			@Parameter(name = "accountId", description = "﻿账户ID") Long accountId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "发送消息-测试1")
	public void sendLetter1();
	
	@Permission
	@Action(version = FinVersion1.class, description = "项目统计-测试")
	public void testSummayry();
	
	@Action(version = FinVersion1.class, description = "手动计息")
	public void handleCountDaysInterest(
			@Parameter(name = "enterpriseName", description = "﻿企业名", nullable = true) String enterpriseName,
			@Parameter(name = "financeNumber", description = "融资编号", nullable = true) String financeNumber,
			@Parameter(name = "date", description = "融资编号") Integer date
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "计算额度")
	public void initEnterpriseEnterprise(
			@Parameter(name = "enterpriseId", description = "﻿企业ID", nullable = true) Long enterpriseId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "融资申请审核-增补融资产品")
	public void supplementFinanceProductInner(FinanceProductInnerInput input);
	
	@Permission
	@Action(version = FinVersion1.class, description = "融资申请审核-增补审核意见-商务部")
	public FiananceAuditInfo supplementBussinessAuditOpinion(FinanceAudit financeAudit);
	
	@Permission
	@Action(version = FinVersion1.class, description = "融资申请审核-提交审核意见-商务部")
	public void submitBussinessAuditOpinion(FinanceAudit financeAudit);
	
	@Permission
	@Action(version = FinVersion1.class, description = "融资申请审核-增补审核意见-商务领导")
	public FiananceAuditInfo supplementBussinessManageAuditOpinion(FinanceAudit financeAudit);
	
	@Permission
	@Action(version = FinVersion1.class, description = "融资申请审核-提交审核意见-商务领导")
	public void submitBussinessManageAuditOpinion(FinanceAudit financeAudit);
	
	@Permission
	@Action(version = FinVersion1.class, description = "融资申请审核-增补审核意见-财务确认")
	public FiananceAuditInfo supplementOperationAuditOpinion(FinanceAudit financeAudit);
	
	@Permission
	@Action(version = FinVersion1.class, description = "融资申请审核-提交审核意见-财务确认")
	public void submitOperationAuditOpinion(FinanceAudit financeAudit);
	
	@Permission
	@Action(version = FinVersion1.class, description = "融资申请审核-增补审核意见-风控")
	public FiananceAuditInfo supplementRiskAuditOpinion(FinanceAudit financeAudit);
	
	@Permission
	@Action(version = FinVersion1.class, description = "融资申请审核-提交审核意见-风控")
	public void submitRiskAuditOpinion(FinanceAudit financeAudit);
	
	@Permission
	@Action(version = FinVersion1.class, description = "融资申请审核-增补审核意见-风控领导")
	public FiananceAuditInfo supplementRiskMemberAuditOpinion(FinanceAudit financeAudit);
	
	@Permission
	@Action(version = FinVersion1.class, description = "融资申请审核-提交审核意见-风控领导")
	public void submitRiskMemberAuditOpinion(FinanceAudit financeAudit);
	
	@Permission
	@Action(version = FinVersion1.class, description = "融资申请审核-增补审核意见-副总经理")
	public FiananceAuditInfo supplementOperationManageAuditOpinion(FinanceAudit financeAudit);
	
	@Permission
	@Action(version = FinVersion1.class, description = "融资申请审核-提交审核意见-副总经理")
	public void submitOperationManageAuditOpinion(FinanceAudit financeAudit);
	
	@Permission
	@Action(version = FinVersion1.class, description = "拒绝融资申请")
	@Parameter(name = "auditorId", description = "融资审核ID")
	public String opposeFinanceApplication(FinanceAudit financeAudit);

	@Permission
	@Action(version = FinVersion1.class, description = "接受融资审批金额")
	public void consentFinanceAuditAmountApplication(
			@Parameter(name = "financeId", description = "﻿融资信息ID") Long financeId
	);
	
	@Action(version = FinVersion1.class, description = "确认提交融资申请")
	public void submitFinanceApplication(
			@Parameter(name = "financeId", description = "﻿融资信息ID") Long financeId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "强制驳回融资信息-未放款前平台可强制操作")
	public void rejectFinanceApplication(
			@Parameter(name = "financeId", description = "﻿融资信息ID") Long financeId,
			@Parameter(name = "rejectRemark", description = "审核备注", nullable = true) String rejectRemark
	);

	@Permission
	@Action(version = FinVersion1.class, description = "调整融资授信额度")
	public void adjustFinanceCreditQuota(
			@Parameter(name = "financeId", description = "﻿融资信息ID") Long financeId,
			@Parameter(name = "creditQuota", description = "﻿授信金额调整额度") BigDecimal creditQuota,
			@Parameter(name = "adjustment", description = "调整模式") Integer adjustment
	);

	@Action(version = FinVersion1.class, description = "查询融资基本信息及证明材料(融资信息/质押解除)")
	public FinanceApplicationDetail inquireFinanceApplicationDetail(
			@Parameter(name = "financeId", description = "﻿融资信息ID") Long financeId
	);
	
	@Action(version = FinVersion1.class, description = "查询融资基本信息及证明材料(融资信息/质押解除)")
	public FinanceApplicationDetail inquireFinanceApplicationDetailByFinanceNUmber(
			@Parameter(name = "financeNumber", description = "﻿融资编号") String financeNumber
	);

	@Permission
	@Action(version = FinVersion1.class, description = "企业查询融资信息列表")
	public PageList<FinanceLineInfo> inquireFinanceApplicationList(
			@Parameter(name = "dateBegin", description = "﻿申请开始时间", nullable = true) String dateBegin,
			@Parameter(name = "dateEnd", description = "﻿申请结束时间", nullable = true) String dateEnd,
			@Parameter(name = "financeNumber", description = "﻿融资编号", nullable = true) String financeNumber,
			@Parameter(name = "bulkstockName", description = "货物名称", nullable = true) String bulkstockName,
			@Parameter(name = "financeState", description = "融资状态 1:审批中/2:已审批/3:审批不通过/4:合同已签订(融资合同&监管合同)/5:待验货/6:已验货/7:待放款/8:已收款/9:提货审批中/10:提货审批不通过/11:换货审批中/12:换货审批不通过/13:提货已审批/14:待放货/15:放货中/16:已签收/17:已完成", nullable = true) Integer[] financeState,
			@Parameter(name = "waybillNumber", description = "运单号", nullable = true) String waybillNumber,
			@Parameter(name = "caseNumber", description = "箱号", nullable = true) String caseNumber,
			@Parameter(name = "hasBail", description = "是否含有保证金", nullable = true) Boolean hasBail,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "企业查询客户融资信息列表")
	public PageList<FinanceLineInfo> inquireClientFinanceApplicationList(
			@Parameter(name = "enterpriseId", description = "﻿申请开始时间", nullable = true) Long enterpriseId,
			@Parameter(name = "dateBegin", description = "﻿申请开始时间", nullable = true) String dateBegin,
			@Parameter(name = "dateEnd", description = "﻿申请结束时间", nullable = true) String dateEnd,
			@Parameter(name = "financeNumber", description = "﻿融资编号", nullable = true) String financeNumber,
			@Parameter(name = "bulkstockName", description = "货物名称", nullable = true) String bulkstockName,
			@Parameter(name = "financeState", description = "融资状态 1:审批中/2:已审批/3:审批不通过/4:合同已签订(融资合同&监管合同)/5:待验货/6:已验货/7:待放款/8:已收款/9:提货审批中/10:提货审批不通过/11:换货审批中/12:换货审批不通过/13:提货已审批/14:待放货/15:放货中/16:已签收/17:已完成", nullable = true) Integer[] financeState,
			@Parameter(name = "waybillNumber", description = "运单号", nullable = true) String waybillNumber,
			@Parameter(name = "caseNumber", description = "箱号", nullable = true) String caseNumber,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);

	@Permission
	@Action(version = FinVersion1.class, description = "平台查询融资信息列表")
	public PageList<FinanceLineInfo> inquireFinanceList(
			@Parameter(name = "financeId", description = "﻿融资信息ID", nullable = true) Long[] financeId,
			@Parameter(name = "enterpriseId", description = "﻿融资企业ID", nullable = true) Long enterpriseId,
			@Parameter(name = "enterpriseName", description = "﻿融资企业", nullable = true) String enterpriseName,
			@Parameter(name = "financeContractNumber", description = "合同编号", nullable = true) String financeContractNumber,
			@Parameter(name = "financeContractSerialNumber", description = "合同序列号", nullable = true) String financeContractSerialNumber,
			@Parameter(name = "beginDate", description = "﻿申请开始时间", nullable = true) String beginDate,
			@Parameter(name = "endDate", description = "﻿申请结束时间", nullable = true) String endDate,
			@Parameter(name = "minAmount", description = "﻿融资最小金额", nullable = true) BigDecimal minAmount,
			@Parameter(name = "maxAmount", description = "﻿融资最大金额", nullable = true) BigDecimal maxAmount,
			@Parameter(name = "financeNumber", description = "﻿融资编号", nullable = true) String financeNumber,
			@Parameter(name = "bulkstockName", description = "货物名称", nullable = true) String bulkstockName,
			@Parameter(name = "bulkstockInfoId", description = "货物ID", nullable = true) Long bulkstockInfoId,
			@Parameter(name = "financeState", description = "融资状态 1:审批中/2:已审批/3:审批不通过/4:合同已签订(融资合同&监管合同)/5:待验货/6:已验货/7:待放款/8:已收款/9:提货审批中/10:提货审批不通过/11:换货审批中/12:换货审批不通过/13:提货已审批/14:待放货/15:放货中/16:已签收/17:已完成", nullable = true) Integer[] financeState,
			@Parameter(name = "waybillNumber", description = "运单号", nullable = true) String waybillNumber,
			@Parameter(name = "caseNumber", description = "箱号", nullable = true) String caseNumber,
			@Parameter(name = "productType", description = "产品类型", nullable = true) Integer productType,
			@Parameter(name = "isProxy", description = "是否代理业务", nullable = true) Boolean isProxy,
			@Parameter(name = "isWarehouse", description = "是否代理业务", nullable = true) Boolean isWarehouse,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询融资信息列表")
	public PageList<FinanceLineInfo> inquireWarehouseFinanceList(
			@Parameter(name = "enterpriseId", description = "﻿融资企业ID", nullable = true) Long enterpriseId,
			@Parameter(name = "enterpriseName", description = "﻿融资企业", nullable = true) String enterpriseName,
			@Parameter(name = "financeNumber", description = "﻿融资编号", nullable = true) String financeNumber,
			@Parameter(name = "productType", description = "产品类型", nullable = true) Integer productType,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);

	@Permission
	@Action(version = FinVersion1.class, description = "根据融资编号查询融资(自动补全)")
	public PageList<FinanceLineInfo> inquireFinancePadList(
			@Parameter(name = "keyword", description = "融资编号", nullable = true) String keyword,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);

	@Permission
	@Action(version = FinVersion1.class, description = "根据融资ID获取最近的评审信息(融资评审)")
	public FinanceAuditDetail inquireFinanceLatestAuditDetail(
			@Parameter(name = "financeId", description = "﻿融资信息ID") Long financeId	
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "获取融资评审信息")
	public FinanceAuditDetail inquireFinanceAuditDetail(
			@Parameter(name = "financeAuditId", description = "﻿融资评审ID") Long financeAuditId	
	);

	@Permission
	@Action(version = FinVersion1.class, description = "融资动态信息")
	public List<FinanceProcess> inquireFinanceProcessList(
			@Parameter(name = "financeId", description = "融资信息ID") Long financeId
	);

	//=======================================================================================================================================//
	@Permission
	@Action(version = FinVersion1.class, description = "保存提单号")
	public void createFinanceWaybill(
			@Parameter(name = "financeId", description = "融资信息ID") Long financeId,
			@Parameter(name = "bookingSpaceNumber", description = "订舱单号") String bookingSpaceNumber,
			@Parameter(name = "waybillNumber", description = "提单号") String[] waybillNumbers,
			@Parameter(name = "caseQuantity", description = "融资订舱箱信息箱量总和") Integer caseQuantity
	);

	@Permission
	@Action(version = FinVersion1.class, description = "查询融资信息的提单号")
	public List<FinanceWaybillDetail> inquireFinanceWaybillList(
			@Parameter(name = "financeId", description = "融资信息ID") Long financeId
	);

	//=======================================================================================================================================//
	@Permission
	@Action(version = FinVersion1.class, description = "质押终结通知")
	@Parameter(name = "supervisionEndallId", description = "质押终结ID")
	public String createSupervisionEndall(
			@Parameter(name = "financeId", description = "﻿融资信息ID") Long financeId,
			@Parameter(name = "remark", description = "说明") String remark
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询质押终结通知")
	public SupervisionEndallDetail inquireSupervisionEndall(
			@Parameter(name = "financeId", description = "﻿融资信息ID") Long financeId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "融资评价")
	@Parameter(name = "evaluateId", description = "融资评价ID")
	public String createFinanceEvaluate(
			@Parameter(name = "financeId", description = "融资信息ID") Long financeId,
			@Parameter(name = "content", description = "评价内容") String content,
			@Parameter(name = "serviceQuality", description = "服务质量") Integer serviceQuality,
			@Parameter(name = "deliverySpeed", description = "货运速度") Integer deliverySpeed,
			@Parameter(name = "cargoSecurity", description = "货物保障") Integer cargoSecurity,
			@Parameter(name = "loanSpeed", description = "放款速度") Integer loanSpeed
	);

	@Permission
	@Action(version = FinVersion1.class, description = "查询融资评价")
	public FinanceEvaluateDetail inquireFinanceEvaluate(
			@Parameter(name = "financeId", description = "融资信息ID") Long financeId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "查询融资评价列表")
	public PageList<FinanceEvaluateDetail> inquireFinanceEvaluatePageList(
			@Parameter(name = "financeId", description = "融资信息ID", nullable = true) Long financeId,
			@Parameter(name = "enterpriseId", description = "企业信息ID", nullable = true) Long enterpriseId,
			@Parameter(name = "logisticsCompanyId", description = "物流公司ID", nullable = true) Long logisticsCompanyId,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "下调融资额度")
	@Parameter(name = "cutId", description = "下调信息ID")
	public String createFinanceCutLines(
			@Parameter(name = "financeId", description = "融资信息ID") Long financeId,
			@Parameter(name = "newLines", description = "下调后额度") BigDecimal newLines,
			@Parameter(name = "cutReason", description = "下调原因") String cutReason,
			@Parameter(name = "remark", description = "备注") String remark
	);

	@Permission
	@Action(version = FinVersion1.class, description = "审核融资额度")
	public void auditFinanceCutLines(
			@Parameter(name = "cutId", description = "下调信息ID") Long cutId,
			@Parameter(name = "auditState", description = "审核状态 2-同意,3-拒绝") Integer auditState,
			@Parameter(name = "auditRemark", description = "下调备注") String auditRemark
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询下调融资额度列表")
	public PageList<FinanceCutLinesDetail> inquireFinanceCutLinesPageList(
			@Parameter(name = "financeId", description = "融资信息ID", nullable = true) Long financeId,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询下调融资额度详情")
	public FinanceCutLinesDetail inquireFinanceCutLinesDetail(
			@Parameter(name = "cutId", description = "下调信息ID", nullable = true) Long cutId
	);
	
	//=======================================================================================================================================//
	@Action(version = FinVersion1.class, description = "金融平台解锁接口")
	public HandleSuitcaseResult handleSuitcase(
			@Parameter(name = "waybillNumber", description = "运单号") String waybillNumber,
			@Parameter(name = "caseNumber", description = "箱号") String caseNumber
	);
	
	@Action(version = FinVersion1.class, description = "融资监管修改订单信息")
	public HandleSuitcaseResult changeOrderInfo(
			@Parameter(name = "bookingSpaceNumber", description = "订舱单号") String bookingSpaceNumber,
			@Parameter(name = "financeNumber", description = "融资单号") String financeNumber,
			@Parameter(name = "type", description = "类型 1-融资 2-监管 3-融资与监管") Integer type
	);
	
	@Action(version = FinVersion1.class, description = "融资监管修改订单信息")
	public HandleSuitcaseResult selectStatus(
			@Parameter(name = "waybillNumber", description = "运单号") String waybillNumber,
			@Parameter(name = "caseNumber", description = "箱号") String caseNumber
	);
	
	@Action(version = FinVersion1.class, description = "根据订舱单号和用户ID查询货物信息")
	public List<FinanceBulkstock> getPODetail(
			@Parameter(name = "bookingSpaceNumber", description = "订舱单号") String bookingSpaceNumber,
			@Parameter(name = "userId", description = "用户ID") String userId
	);
	
	@Action(version = FinVersion1.class, description = "金融平台加锁接口-按箱号运单号")
	public HandleSuitcaseResult goldLocked(
			@Parameter(name = "waybillNumber", description = "运单号") String waybillNumber,
			@Parameter(name = "caseNumber", description = "箱号") String caseNumber
	);
	
//	@Action(version = FinVersion1.class, description = "金融平台加锁接口-按货箱ID")
//	public HandleSuitcaseResult goldLocked(
//			@Parameter(name = "inventoryId", description = "货箱ID") Long inventoryId
//	);
	
	@Action(version = FinVersion1.class, description = "金融平台解锁接口-按箱号运单号")
	public HandleSuitcaseResult goldUnlocked(
			@Parameter(name = "waybillNumber", description = "运单号") String waybillNumber,
			@Parameter(name = "caseNumber", description = "箱号") String caseNumber
	);
	
//	@Action(version = FinVersion1.class, description = "金融平台解锁接口-按货箱ID")
//	public HandleSuitcaseResult goldUnlocked(
//			@Parameter(name = "inventoryId", description = "货箱ID") Long inventoryId
//	);
	
	@Action(version = FinVersion1.class, description = "运单放箱状态查询")
	public HandleSuitcaseResult containerTaken(
			@Parameter(name = "waybillNumber", description = "运单号") String waybillNumber,
			@Parameter(name = "caseNumber", description = "箱号") String caseNumber
	);
	
	//=====================================================================================================
	@Permission
	@Action(version = FinVersion1.class, description = "收益列表")
	public PageList<FinanceCommissionInfoDetail> inquireFinanceCommissionInfoPageList(
			@Parameter(name = "extractId", description = "提取ID", nullable = true) Long extractId,
			@Parameter(name = "enterpriseId", description = "融资企业ID", nullable = true) Long enterpriseId,
			@Parameter(name = "accountId", description = "账户ID", nullable = true) Long accountId,
			@Parameter(name = "type", description = "类型 0-分销商 1-个人", nullable = true) Integer type,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "收益列表")
	public List<FinanceCommissionInfoDetail> inquireFinanceCommissionInfoList(
			@Parameter(name = "extractId", description = "提取ID", nullable = true) Long extractId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "费用列表")
	public PageList<FinanceExpenseDetail> inquireFinanceExpenseDetailPageList(
			@Parameter(name = "financeId", description = "融资信息ID") Long financeId,
			@Parameter(name = "expenseItem", description = "费用项目", nullable = true) String expenseItem,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "佣金提取申请")
	public void createFinanceMoneyStatementEarning(
			@Parameter(name = "financeIds", description = "融资ID") Long[] financeIds
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "费用列表")
	public void createFinanceMoneyStatementBill(
			@Parameter(name = "expenseDetailId", description = "费用详情ID") Long expenseDetailId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "佣金提取申请列表")
	public PageList<CommissionExtractApplicationDetail> inquireCommissionExtractApplicationPageList(
			@Parameter(name = "auditState", description = "审核状态", nullable = true) Integer auditState,
//			@Parameter(name = "financeNumber", description = "融资编号", nullable = true) String financeNumber,
//			@Parameter(name = "productType", description = "业务类型", nullable = true) Integer productType,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "佣金提取申请详情")
	public CommissionExtractApplicationDetail inquireCommissionExtractApplicationDetail(
			@Parameter(name = "extractId", description = "提取ID") Long extractId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "佣金提取多级审核-保存")
	public void saveCommissionExtractApplicationAudit(
			@Parameter(name = "extractId", description = "提取ID") Long extractId,
			@Parameter(name = "auditType", description = "审核类型") Integer auditType,
			@Parameter(name = "auditState", description = "审核状态") Boolean auditState,
			@Parameter(name = "audit", description = "审核意见", nullable = true) String audit
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "佣金提取多级审核-提交")
	public void submitCommissionExtractApplicationAudit(
			@Parameter(name = "extractId", description = "提取ID") Long extractId,
			@Parameter(name = "auditType", description = "审核类型") Integer auditType
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "佣金提取审核-同意")
	public void consentCommissionExtractApplication(
			@Parameter(name = "extractId", description = "提取ID") Long extractId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "佣金提取审核-拒绝")
	public void opposeCommissionExtractApplication(
			@Parameter(name = "extractId", description = "提取ID") Long extractId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询审批记录")
	public List<FinanceAuditRecordDetail> inquireAuditRecord(
			@Parameter(name = "recordType", description = "审批类型  1:融资 2:放款 3:提货 4:用户审核 5:用户等级审核  6:临时额度审核") Long recordType,
			@Parameter(name = "recordId", description = "审批ID") Long auditId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "创建融资取消申请")
	@Parameter(name = "cancelId", description = "融资取消申请ID")
	public String createFinanceCancelApplication(
			@Parameter(name = "financeId", description = "融资ID") Long financeId,
			@Parameter(name = "remark", description = "备注", nullable = true) String remark
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询融资取消申请列表")
	public PageList<FinanceCancelApplicationDetail> inquireFinanceCancelApplicationPageList(
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "审核融资取消申请")
	public void auditFinanceCancelApplication(
			@Parameter(name = "cancelId", description = "融资取消申请ID") Long cancelId,
			@Parameter(name = "auditState", description = "审批意见 2-同意,3-拒绝") Integer auditState,
			@Parameter(name = "auditRemark", description = "审批备注", nullable = true) String auditRemark
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询所有融资状态")
	@Parameter(name = "financeStateStr", description = "融资状态-以逗号隔开")
	public String inquireFinanceState();
	
	@Action(version = FinVersion1.class, description = "查询仓库列表-仓储系统")
	public List<WarehouseInfo> inquireWarehouseList(
			@Parameter(name = "enterpriseId", description = "企业ID", nullable = true) String enterpriseId
	);
	
	@Action(version = FinVersion1.class, description = "查询企业列表-仓储系统")
	public List<WarehouseInfo> inquireWarehouseCustList();
	
	@Action(version = FinVersion1.class, description = "导入运费单信息")
	public List<ContainerInventory> importFreightInfo(
			@Parameter(name = "fileUuid", description = "运费信息EXCEL") String fileUuid
	);
	
	@Action(version=FinVersion1.class, description="从仓储系统查询入库信息")
	public ResultData searchInboundInfoForFinance(
			@Parameter(name="inboundNo", description="入库单号") String inboundNo
	);
	
	@Action(version=FinVersion1.class, description="从仓储系统查询入库详情信息")
	public WareResultDetailData searchInboundInfoForFinanceDetail(
			@Parameter(name="inboundNo", description="入库单号") String inboundNo
	);
	
	@Action(version=FinVersion1.class, description="从仓储系统查询出库详情信息")
	public WareResultDetailData2 returnOutboundDetailInfo(
			@Parameter(name="pickupNumber", description="融资单号") String pickupNumber,
			@Parameter(name="warehouseId", description="融资单号") String warehouseId
	);
	
	@Action(version=FinVersion1.class, description="查询仓库监控信息")
	public WarehouseMap showWarehouseMapForFinance(
			@Parameter(name="warehouseId", description="仓库ID") String warehouseId
	);
	
	@Action(version=FinVersion1.class, description="入库单加锁-仓储系统")
	public void lockWarehouseAndInbound(
			@Parameter(name="inboundNo", description="入库单号") String inboundNo
	);
	
	@Action(version=FinVersion1.class, description="入库单解锁-仓储系统")
	public void unlockInbound(
			@Parameter(name="inboundNo", description="入库单号") String inboundNo
	);
	
	@Action(version=FinVersion1.class, description="完成出库-仓储系统")
	public void completeOutbound(
			@Parameter(name="inboundNo", description="入库单号") String inboundNo
	);
	
	@Action(version=FinVersion1.class, description="出库计划")
	public ResultData getOutboundPlan(
			@Parameter(name="pickupNumber", description="提货单号") String pickupNumber,
			@Parameter(name="productType", description="业务类型") Integer productType,
			@Parameter(name="consignor_id", description="委托人ID") String consignor_id,
			@Parameter(name="financeNumber", description="融资编号") String[] financeNumber,
			@Parameter(name="location_id", description="库位ID") String[] location_id,
			@Parameter(name="goods_id", description="货物ID") Long[] goods_id,
			@Parameter(name="quantitys", description="数量") BigDecimal[] quantitys,
			@Parameter(name="weights", description="重量") BigDecimal[] weights,
			@Parameter(name="volumes", description="体积") BigDecimal[] volumes,
			@Parameter(name="locationNames", description="库位") String[] locationNames,
			@Parameter(name="locationAreas", description="库区") String[] locationAreas,
			@Parameter(name="warehouseId", description="仓库ID") String[] warehouseId
	);
	//---------------------------------------------------------------------------------------------
	@Permission
	@Action(version = FinVersion1.class, description = "代理创建融资申请基本信息")
	@Parameter(name = "financeId", description = "融资信息ID")
	public String proxyCreateFinanceApplication(FinanceApplication financeApplication);
	
	@Action(version = FinVersion1.class, description = "仁建国贸代采业务申请")
	public String gmCreateFinanceApplication(FinanceApplication financeApplication);
}
